.intel_syntax noprefix
.global ssearch

ssearch:
	push 	ebp
	mov		ebp, esp
	
	push 	ebx 			#key
	push 	edi				#contador
	push 	esi				#base do array
	
	xor 	eax, eax		#retorno
	xor 	edi, edi		#contador
	
	mov 	ebx, [ebp+8]	#coloca em ebx o ponteiro para key
	
	mov 	esi, [ebp+12] 	#coloca em esi o ponteiro para a base do array
	
	
	xor 	eax, eax
	
loop:
	test 	edi, [ebp+16] 	#verifica se esta no final do array. subtracçao do contador com o size do array
	jnz 	fim  #antigamente era JZ fim 
	
if:
	push 	esi				#elementos de comparaçao
	push 	ebx				#elementos de comparaçao
	
	call 	[ebp+24]		#chama a funçao de comparaçao
	
	add 	esp, 8 
	
	sub 	eax, 0			#verifica se encontrou o elemento PODES ESTRAGAR EAX
	jne 	inc
	
fim:
	mov 	eax, esi 		#quando encontra coloca o valor em eax para retornar
	pop 	esi
	pop 	edi
	pop 	ebx
	pop 	ebp
	
	#sub 	esp, 4    #Ajuste de stack
	
	ret

inc:
	add		esi, [ebp+20] 	#incrementa o indice do array com o tamanho de cada elemento
	add 	edi,1 			#incrementa o count
	jmp 	loop
